namespace Sirius.Mapper
{
    using System;

    public interface ITypeMapping<T>
    {
        ITypeMapping<T> Property<TResult>(string columnName, Func<T, TResult> getter, Action<T, TResult> setter);
        ITypeMapping<T> Key<TResult>(string columnName, Func<T, TResult> getter, Action<T, TResult> setter);
        ITypeMapping<T> Table(string tableName);

        IQuery BuildInsertQuery(IProvider provider, T entity);
        IQuery BuildDeleteQuery(IProvider provider, T entity);
        IQuery BuildGetQuery(IProvider provider, T entity);
        IQuery BuildUpdateQuery(IProvider provider, T entity);
    }
}